#include <stdio.h>
#include "arrint.h"

int main()
	{
	  int ne,i,j,elec,v=0;
	  char t='n';

	  while (t!='s') /*ciclo para ejecutar el programa reiteradas veces.*/
	    {

	      v=0; 	      
	      arrInt array;

		printf("\n###################################################################");
     		printf("\n#************************* T * A * D *****************************#");
     		printf("\n#**************                                       ************#");
     		printf("\n#**************  1-Ingresar el arreglo a manualmente  ************#");
		printf("\n#**************  2-Ingresar el arreglo aleatoriamente ************#");
     		printf("\n#**************                                       ************#");
     		printf("\n#*****************************************************************#");
		printf("\n###################################################################\n ---->   ");


		/*ingresa la opcion y verifica que sea correcta*/
		do{
		    v=scanf("%i",&elec);
		   		if (elec<1 || elec>2 || v!=1){
			    	printf("\n\a\a\a\aIngrese una opcion correcta: ");
				v=scanf("%i",&elec);
		    }
	
		}while(v!=1);
	
		v=0;

		/*ingresa la longitud del arreglo y chequea que sea mayor que 0*/
		do{
		printf("Ingrese la longitud del arreglo: ");
		v=scanf("%i",&ne);
		if(v!=1 ||  ne<1){
			printf("\a\a\a\aDatos ingresados incorrectamente. Intente de nuevo");
			v=0;
		}
		else{
			v=1;
		}
	} while(v!=1);
		
	v=0;

		/*crea el array*/
		array = arrInt_create(ne);

		/*llena el array*/
		if (elec==1){
			arrInt_fillStdIn(array);
			}
		else if (elec==2){
			arrInt_fillRand(array);
			}

		/*muestra el array en la pantalla*/
		arrInt_showStdOut(array);

		while (v!=1)
		  {
		    printf("Ingrese los indice a intercambiar:\n");
		    printf("Primer indice: ");
		    scanf("%i",&i); 
		    
		    printf("\nSegundo indice: ");
		    scanf("%i",&j);
		    
		    if (i>j || j<0 || i<0 || j>ne || i>ne)
		      {
			printf("\a\a\a\aLos indices ingresados no son correctos. Ingreselos nuevamente\n");
			v=0;
		      }
		    else
		      {v=1;}
		  }



		/*muestra el array invertido*/  
		printf("El array ingresado anteriormente ha sido invertido en %i y %i.\n ",i,j);
		arrInt_swap(array,i,j);
		arrInt_showStdOut(array);

		/*muestra el reverse*/
		printf("El array, luego de aplicársele la función reverse, queda así:\n");
		arrInt_reverse(array);
		arrInt_showStdOut(array);

		/*destruye el array*/
		arrInt_destroy(array);
		
		
		/*pregunta si se desea finalizar la aplicacion o continuar*/
		printf("Si desea finalizar la aplicacion presione 's', o presione cualquier tecla para continuar:  ");
		scanf("%s",&t);
	    }
	  return 0;
}
